﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ProjetoJVA.localhostTurma;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Net;


namespace ProjetoJVA
{
    public partial class NovaTurmaTela : Form
    {

        private Turma novaTurma;
        private Serie serie;
        private Funcionario funcionario;
        private List<Funcionario> listaFuncionarios;
        private Service1 serviçoTurma;
        private ListViewItem professor;

        public NovaTurmaTela()
        {
            InitializeComponent();
        }

        private void NovaTurmaTela_Load(object sender, EventArgs e)
        {
            this.FormBorderStyle = FormBorderStyle.FixedDialog;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        private void botaoOk_Click(object sender, EventArgs e)
        {
            novaTurma = new Turma();
            serie = new Serie();            
            serviçoTurma = new Service1();
            listaFuncionarios = new List<Funcionario>();
            Int32 indice;
            Int32 cont = 0;
            string itemComboBox;

            try
            {
                novaTurma.DescTurma = textBoxdescTurma.Text;
                novaTurma.QtdAlunosMax = Convert.ToInt32(textBoxqtdAlunosMax.Text);

                if (comboBoxTurnos.SelectedIndex <= -1)
                {
                    MessageBox.Show("Nenhum TURNO selecionado para inclusão da turma!!!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    comboBoxTurnos.Focus();
                    return;
                }
                else
                {
                    indice = comboBoxTurnos.SelectedIndex;
                    itemComboBox = comboBoxTurnos.Items[indice].ToString();
                    novaTurma.TurnoTurma = itemComboBox;
                }


                if (comboBoxSerie.SelectedIndex <= -1)
                {
                    MessageBox.Show("Nenhuma série selecionada para inclusão da turma!!!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    comboBoxSerie.Focus();
                    return;
                }
                else
                {
                    indice = comboBoxSerie.SelectedIndex;
                    itemComboBox = comboBoxSerie.Items[indice].ToString();
                    serie.CodSerie = Convert.ToInt32(itemComboBox.Substring(0, 1));
                }

                while (cont < listViewProfessores.Items.Count)
                {
                    funcionario = new Funcionario();
                    professor = listViewProfessores.Items[cont];
                    funcionario.MatFunc = Convert.ToInt32(professor.SubItems[0].Text);
                    listaFuncionarios.Add(funcionario);
                    cont++;
                }

                novaTurma.Serie = serie;
                novaTurma.Funcionarios = listaFuncionarios.ToArray();
                serviçoTurma.incluirTurma(novaTurma);
                MessageBox.Show("Turma incluída com sucesso!!!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                this.Dispose();
                textBoxdescTurma.Clear();
                textBoxqtdAlunosMax.Clear();
            }
            catch (FormatException)
            {
                MessageBox.Show("campo MÁXIMO DE ALUNOS em BRANCO ou em FORMATO INVÁLIDO!!!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (WebException ex)
            {
                MessageBox.Show(ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (SoapException ex)
            {
                var message = ex.Message;

                message = message.Remove(0, message.LastIndexOf("--->"));

                message = message.Remove(0, message.IndexOf(":") + 1);

                if (message.IndexOf('\n') >= 0)
                {

                    message = message.Remove(message.IndexOf('\n'));
                }

                MessageBox.Show(message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }            
        }

        private void botaoAdicionarProf_Click(object sender, EventArgs e)
        {
            professor = new ListViewItem();
            Int32 indice;
            string itemComboBox;

            if (comboBoxProfessores.SelectedIndex <= -1)
            {
                MessageBox.Show("Nenhum professor(a) selecionado(a)!!!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                comboBoxProfessores.Focus();
                return;
            }
            else
            {
                List<Funcionario> listaFuncionarios = serviçoTurma.listarFuncionarios().ToList();
                indice = comboBoxProfessores.SelectedIndex;
                itemComboBox = comboBoxProfessores.Items[indice].ToString();
                professor = listViewProfessores.Items.Add(listaFuncionarios[indice].MatFunc.ToString());
                professor.SubItems.Add(listaFuncionarios[indice].NomeFunc);
                professor.SubItems.Add(listaFuncionarios[indice].Disciplina.Nome);
            }
        }

        private void comboBoxProfessores_Click(object sender, EventArgs e)
        {
            listaFuncionarios = new List<Funcionario>();
            serviçoTurma = new Service1();

            comboBoxProfessores.Items.Clear();

            listaFuncionarios.Clear();

            try
            {
                listaFuncionarios = serviçoTurma.listarFuncionarios().ToList();

                foreach (var funcionario in listaFuncionarios)
                {
                    comboBoxProfessores.Items.Add(funcionario.MatFunc + " - " + funcionario.NomeFunc + " - " + funcionario.Disciplina.Nome);
                }
            }
            catch (SoapException ex)
            {
                var message = ex.Message;

                message = message.Remove(0, message.LastIndexOf("--->"));

                message = message.Remove(0, message.IndexOf(":") + 1);

                if (message.IndexOf('\n') >= 0)
                {

                    message = message.Remove(message.IndexOf('\n'));
                }

                MessageBox.Show(message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        private void comboBoxSerie_Click(object sender, EventArgs e)
        {
            List<Serie> listaSeries = new List<Serie>();
            serviçoTurma = new Service1();

            comboBoxSerie.Items.Clear();

            listaSeries.Clear();

            try
            {
                listaSeries = serviçoTurma.listarSeries().ToList();

                foreach (var serie in listaSeries)
                {
                    comboBoxSerie.Items.Add(serie.CodSerie + " - " + serie.DescSerie);
                }
            }
            catch (SoapException ex)
            {
                var message = ex.Message;

                message = message.Remove(0, message.LastIndexOf("--->"));

                message = message.Remove(0, message.IndexOf(":") + 1);

                if (message.IndexOf('\n') >= 0)
                {

                    message = message.Remove(message.IndexOf('\n'));
                }

                MessageBox.Show(message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void botaoRemoverProf_Click(object sender, EventArgs e)
        {
            try
            {
                listViewProfessores.SelectedItems[0].Remove();
            }
            catch (ArgumentOutOfRangeException)
            {
                MessageBox.Show("Nenhum professor selecionado!");
            }
        }
    }
}
